import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String stuName = sc.next();
        int stuAge = sc.nextInt();
        String stuOccupation = sc.next();
        String worName = sc.next();
        int eAge = sc.nextInt();
        String worOccupation = sc.next();
        /********* begin *********/
        // 分别实例化Student类与Worker类的对象，并调用各自构造方法初始化类属性。
           Student stu = new Student(stuName,stuAge,stuOccupation);
           Worker wor = new Worker(worName,eAge,worOccupation);
        // 分别调用各自类中被复写的talk()方法 打印信息。
          stu.talk();
          wor.talk();
        /********* end *********/
    }
}

// 声明一个名为Person的抽象类，在Person中声明了三个属性name age occupation和一个抽象方法——talk()。
abstract class Person {
    /********* begin *********/
       String name;
       int age;
       String occupation;
    abstract  void talk();
    /********* end *********/
}

// Student类继承自Person类，添加带三个参数的构造方法，复写talk()方法 返回姓名、年龄和职业信息("学生——>姓名：name，年龄：age，职业：occupation！")
class Student extends Person {
    /********* begin *********/
       Student(String name,int age, String occupation) {
           this.name=name;
           this.age=age;
           this.occupation=occupation;
       }
       void talk() {
           System.out.println("学生——>姓名：" + name + " 年龄：" + age + "，职业：" + occupation + "! ");
       }
    /********* end *********/
}

// Worker类继承自Person类，添加带三个参数的构造方法，复写talk()方法 返回姓名、年龄和职业信息("工人——>姓名：name，年龄：age，职业：occupation！")
class Worker extends Person {
    /********* begin *********/
    Worker(String name,int age, String occupation) {
        this.name=name;
        this.age=age;
        this.occupation=occupation;
    }
    void talk() {
        System.out.println("学生——>姓名：" + name + " 年龄：" + age + "，职业：" + occupation + "! ");
    }
    /********* end *********/

}